package map_and_set;

import java.util.HashSet;

public class SingleNumber {
    public int singleNumber(int[] nums){
        HashSet<Integer> set = new HashSet<>();
        // 先遍历数组 将每一个元素都放入 set 如果 set中已经存在 说明这个数字是重复的 所以将set中的这个元素删除 如果不存在就放入set
        for (int i = 0; i < nums.length; i++) {
            if(set.contains(nums[i])){
                set.remove(nums[i]);
            }else{
                set.add(nums[i]);
            }
        }
        // 遍历结束后 在set 中存在的数字就是只出现了一次的数字
        for (int i = 0; i < nums.length; i++) {
            if(set.contains(nums[i])){
                return nums[i];
            }
        }
        return -1;
    }
}
